package com.spsoft.dmzeinvoice.service;

import com.spsoft.core.model.Result;
import com.spsoft.core.model.leqidmz.param.*;
import com.spsoft.core.model.leqidmz.response.*;

/**
 *
 */
public interface VmsBaseInfoService {

    /**
     * 查询纳税人企业基本信息
     * @param params 请求参数-纳税人识别号
     * @return 纳税人企业基本信息
     */
    Result<QueryEnterpriseInfoVO> queryEnterprise(BaseNsrRequestParams params);

    /**
     * 查询纳税人风险信息
     * @param params 请求参数-纳税人识别号
     * @return 查询纳税人风险信息
     */
    Result<QueryEnterpriseInfoRiskVO> queryEnterpriseRisk(BaseNsrRequestParams params);

    /**
     * 查询纳税人分类编码信息
     * @param params
     * @return
     */
    Result<QueryClassifyCodeVO> queryClassifyCode(QueryClassifyCodeParams params);

    /**
     * 查询可用税率
     * @param params 请求参数-纳税人识别号
     * @return 查询可用税率
     */
    Result<QueryAvalibleTaxRateVo> queryAvalibleTaxRate(BaseNsrRequestParams params);

    /**
     * 查询授信额度
     * @param params 请求参数-纳税人识别号
     * @return 查询授信额度
     */
    Result<QueryCreditlimitVO> queryCreditLimit(BaseNsrRequestParams params);

    /**
     * 调整授信额度有效期
     * @param params 请求参数-纳税人识别号
     * @return 调整授信额度有效期
     */
    Result<QueryCreditPeriodVO> queryCreditPeriod(QueryCreditPeriodParams params);

    /**
     * 下载/退回授信额度
     * @param params 请求参数-下载/退回授信额度对象
     * @return 调整授信额度有效期
     */
    Result<ApplyCreditVO> applyCredit(ApplyCreditParams params);

    /**
     * 获取数电票批量预赋码信息
     * @param params 请求参数-获取数电票批量预赋码信息对象
     * @return 调整授信额度有效期
     */
    Result<AssignedCodeResponseVO> assignedCode(AssignedCodeParams params);

    /**
     * 查询差额征税编码信息
     * @param params 请求参数
     * @return 差额征税编码信息
     */
    Result<QueryDifferentialTaxationVO> differential(BaseUserInfoParam params);

    /**
     * 查询不动产销售房源信息
     * @param params 请求参数
     * @return 不动产销售房源信息
     */
    Result<QueryHouseInfoVO> queryHouseInfo(QueryHouseInfoParams params);
}
